package cloud.pangui.core.lock.resolver;

import lombok.Getter;
import lombok.Setter;

import java.lang.reflect.Method;

/**
 * @Auther hepangui
 * @Date 2020/10/9 0009
 */
public class LockResolver {
	/**
	 * 切面方法
	 */
	@Getter
	@Setter
	protected Method method;


	/**
	 * 解析key值
	 * @param target 当前service对象
	 * @param args
	 * @return
	 */
	public String resolverKey(Object target, Object[] args) {
		return target.getClass().getName() + method.getName();
	}

	/**
	 * 默认的condtion方法
	 * @param target service对象
	 * @param args 传入的方法
	 * @return
	 */
	public boolean checkConidtion(Object target, Object[] args) {
		return true;
	}

	/**
	 * 默认的callBack方法
	 * @param target 当前service对象
	 * @param args 传入参数
	 * @return
	 */
	public Object callback(Object target, Object[] args) {
		return null;
	}

	/**
	 * 默认的务无返回值的callback
	 * @param target 当前service对象
	 * @param args 传入参数
	 */
	public void callbackNoReturn(Object target, Object[] args) {
	}
}
